﻿#define _CRT_SECURE_NO_WARNINGS 1

//#include <stdio.h>
//union Un1
//{
//	char c[5]; //5  1	8	1
//	int i;	      //4	8	4
//};
//union Un2
//{
//	short c[7];//14  2	8	2
//	int i;	   //    4  8   4
//};
//int main()
//{
//	//下⾯输出的结果是什么？
//
//	printf("%d\n", sizeof(union Un1));//8  最大对齐数是4，他的2倍数刚好>=5
//	printf("%d\n", sizeof(union Un2));//16 最大对齐数是4，他的4倍数刚好>=14
//	return 0;
//}


//#include <stdio.h>
////联合类型的声明
//
//union Un
//{
//	char c;
//	int i;
//};
//int main()
//{
//	//联合变量的定义
//	union Un un = { 0 };
//	//计算连个变量的⼤⼩
//	printf("%d\n", sizeof(un));
//	return 0;
//}


////代码1
//#include <stdio.h>
////联合类型的声明
//union Un
//{
//	char c;
//	int i;
//};
//int main()
//{
//	//联合变量的定义
//	union Un un = { 0 };
//	// 下⾯输出的结果是⼀样的吗？
//	printf("%p\n", &(un.i));
//	printf("%p\n", &(un.c));
//	printf("%p\n", &un);
//	return 0;
//}


////代码2
//#include <stdio.h>
////联合类型的声明
//union Un
//{
//	char c;
//	int i;
//};
//
//int main()
//{
//	//联合变量的定义
//	union Un un = { 0 };
//	un.i = 0x11223344;
//	un.c = 0x55;
//	printf("%x\n",un.i);//十六进制: %x (小写) / %X (大写)
//	return 0;
//}


//struct S
//{
//	char c;
//	int i;
//};
//struct S s = { 0 };


//union Un
//{
//	char c;
//	int i;
//};
//union Un un = { 0 };



//struct gift_list
//{
//	//公共属性
//	int stock_number;//库存量
//	double price;	//定价
//	int item_type;	//商品类型
//
//	//特殊属性
//	char author[20];	//作者
//	int num_pages; //页数
//
//	char design[30];//设计
//	int colors;		//颜色
//	int sizes;		//尺寸
//
//};


//#include <stdio.h>
//#include <string.h>
//struct gift_list
//{
//	//公共属性
//	int stock_number;//库存量
//	double price;	//定价
//	int item_type;	//商品类型
//
//	union
//	{
//		struct 
//		{
//			//特殊属性
//			char title[20];  //书名
//			char author[20];//作者
//			int num_pages; //页数
//		}book;
//
//		struct 
//		{
//			char design[30];//设计
//		}cup;
//
//		struct 
//		{
//			char design[30];//设计
//			int colors;		//颜色
//			int sizes;		//尺寸
//		}shirt;
//	};
//};
//
//int main() {
//	struct gift_list item1;
//	item1.stock_number = 50;
//	item1.price = 19.99;
//	item1.item_type = 1;
//
//	strcpy(item1.book.title, "C Programming");//把C Programming字符串复制到book对象中的title
//	strcpy(item1.book.author, "K&R");	//把K&R复制到book对象中的author
//	item1.book.num_pages = 300;
//
//	printf("Book: %s by %s, %d pages\n", item1.book.title, item1.book.author, item1.book.num_pages);
//	return 0;
//}


////判断是大端还是小端
//#include <stdio.h>
//int main()
//{
//	int a = 1;
//	//00 00 00 01  大端
//	//01 00 00 00  小端
//	//把int强转为char判断第一个字节是不是为1就行
//	if (*(char*)&a ==1)
//	{
//		printf("小端");
//	}
//	else
//	{
//		printf("大端");
//	}
//	return 0;
//}


////判断是大端还是小端
//#include <stdio.h>
//union Un
//{
//	char c;
//	int i;
//}un;
//int main()
//{
//	//00 00 00 01  大端
//	//01 00 00 00  小端
//	un.i = 1;
//	if (un.c ==1)
//	{
//		printf("小端");
//	}
//	else
//	{
//		printf("大端");
//	}
//	return 0;
//}


//enum Day//星期
//{
//	Mon,
//	Tues,
//	Wed,
//	Thur,
//	Fri,
//	Sat,
//	sun
//};
//
//enum Sex //性别
//{
//	MALE,
//	FAMALE,
//	SECRET
//};
//
//enum Color//颜⾊
//{
//	RED,
//	GREEN,
//	BLUE
//};


//enum Color//颜⾊
//{
//	RED = 2,
//	GREEN = 4,
//	BLUE = 8
//};


//enum Color//颜⾊
//{
//	RED = 1,
//	GREEN = 2,
//	BLUE = 4
//};
//
//enum Color clr = GREEN;//使⽤枚举常量给枚举变量赋值



#include <stdio.h>
enum Option
{
	EXIT,//0
	ADD,//1
	SUB,
	MUL,
	DIV
};

int Add(int x,int y)
{
	return x + y;
}
int Sub(int x, int y)
{
	return x - y;
}
int Mul(int x, int y)
{
	return x * y;
}
int Div(int x, int y)
{
	return x / y;
}
void menu()
{
	printf("**************************************\n");
	printf("********** 0.Exit   1.Add  ***********\n");
	printf("********** 2.Sub    3.Mul  ***********\n");
	printf("********** 4.Div    0.Exit ***********\n");
	printf("**************************************\n");
}
int main()
{
	int input = 0;
	int num1, num2, result;
	do
	{
		menu();
		printf("请选择运算方法：");
		scanf("%d", &input);
		
		switch (input)
		{
		case ADD:
			printf("请输入要操作的两个数：");
			scanf("%d %d", &num1, &num2);
			result = Add(num1, num2);
			printf("计算结果为：%d\n",result);
			break;
		case SUB:
			printf("请输入要操作的两个数：");
			scanf("%d %d", &num1, &num2);
			result = Sub(num1, num2);
			printf("计算结果为：%d\n", result);
			break;
		case MUL:
			printf("请输入要操作的两个数：");
			scanf("%d %d", &num1, &num2);
			result = Mul(num1, num2);
			printf("计算结果为：%d\n", result);
			break;
		case DIV:
			printf("请输入要操作的两个数：");
			scanf("%d %d", &num1, &num2);
			result = Div(num1, num2);
			printf("计算结果为：%d\n", result);
			break;
		case EXIT:
			break;
		default:
			printf("输入错误，请重新输入：\n");
			break;
		}
	} while (input);

	return 0;
}